package com.zpp.wedding_admin.utils;

import cn.hutool.core.util.ObjectUtil;
import org.springframework.util.DigestUtils;

public class MD5Utils {
//    public static String encode(String rawPassword) {
//        // 加密过程
//        // 1. 使用MD5算法
//        // 2. 使用随机的盐值
//        // 3. 循环5次
//        // 4. 盐的处理方式为：盐 + 原密码 + 盐 + 原密码 + 盐
//        // 注意：因为使用了随机盐，盐值必须被记录下来，本次的返回结果使用$分隔盐与密文
//        String salt = "3967d9da5dcf4f2294ccdea9d106da73";
//        String encodedPassword = rawPassword;
//        for (int i = 0; i < 5; i++) {
//            encodedPassword = DigestUtils.md5DigestAsHex(
//                    (salt + encodedPassword + salt + encodedPassword + salt).getBytes());
//        }
//        return salt + encodedPassword;
//    }
//
//    public static boolean matches(String rawPassword, String encodedPassword) {
//        String salt = encodedPassword.substring(0, 32);
//        String newPassword = rawPassword;
//        for (int i = 0; i < 5; i++) {
//            newPassword = DigestUtils.md5DigestAsHex(
//                    (salt + newPassword + salt + newPassword + salt).getBytes());
//        }
//        newPassword = salt + newPassword;
//        return newPassword.equals(encodedPassword);
//    }

    public static String getCode(String password) {
        Integer code1 = password.hashCode();
        String a = code1.toString();
        Integer code2 = code1.hashCode();
        String b = code2.toString();
        Integer code3 = code2.hashCode();
        String c = code2.toString();
        Integer code4 = code3.hashCode();
        String d = code2.toString();
        return a + b + c + d;
    }

    public static boolean match(String password, String code) {
        if ( !ObjectUtil.isEmpty(password) && !ObjectUtil.isEmpty(code) ) {
            password = getCode(password);
            return code.equals(password);
        }
        return false;
    }

    public static void main(String[] args) {
        System.out.println(getCode("4321"));
    }
}
